package com.binc.testspring.study.applicationEvent;

import lombok.Getter;
import org.springframework.context.ApplicationEvent;

/**
 * FileName: UserRegisterEvent_1    用户注册时间
 *
 *  我们自定义事件UserRegisterEvent继承了ApplicationEvent，继承后必须重载构造函数，构造函数的参数可以任意指定，
 *  其中source参数指的是发生事件的对象，一般我们在发布事件时使用的是this关键字代替本类对象，
 *  而user参数是我们自定义的注册用户对象，该对象可以在监听内被获取。
 *
 *在Spring内部中有多种方式实现监听如：
 *      @EventListener注解、
 *      实现ApplicationListener泛型接口、
 *      实现SmartApplicationListener接口等，
 *  我们下面来讲解下这三种方式分别如何实现。
 *
 */
@Getter
public class UserRegisterEvent_1 extends ApplicationEvent {
    //注册用户对象
    private UserBean_2 user;

    /**
     * 重写构造函数
     * @param source 发生事件的对象
     * @param user 注册用户对象
     */
    public UserRegisterEvent_1(Object source, UserBean_2 user) {
        super(source);
        this.user = user;
    }



}